package leetcode;

/**
 * 给你一个由不同字符组成的字符串 allowed 和一个字符串数组 words 。如果一个字符串的每一个字符都在 allowed 中，就称这个字符串是 一致字符串 。
 * 请你返回 words 数组中 一致字符串 的数目。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/count-the-number-of-consistent-strings
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * @author Europa
 */
public class Num1648 {

    public int countConsistentStrings(String allowed, String[] words) {

        int result = 0;
        //使用一个数组记录allowed 包含的字符，数组定位，效率较高
        int[] allow = new int[26];
        char[] chars = allowed.toCharArray();
        for (char aChar : chars) {
            allow[aChar - 'a'] = 1;
        }
        for (String word : words) {
            char[] arr = word.toCharArray();
            int index = 0;
            int length = arr.length;
            for (; index < length; index++) {
                //如果这个字符没有在allowed 中，直接结束
                char c = arr[index];
                int exist = allow[c - 'a'];
                if (exist == 0) {
                    break;
                }
            }
            //如果相等说明这个字符有判断到最后，结果加1
            if (index == length) {
                result++;
            }
        }
        return result;
    }


    public static void main(String[] args) {
        Num1648 num1648 = new Num1648();
        String str = "ab";
        String[] strings = {"ad", "bd", "aaab", "baa", "badab" };
        int i = num1648.countConsistentStrings(str, strings);
        System.out.println(i);
    }
}
